ret.extend(self._list(key))
return ret
+ def gather(self, *args):
+ ret = []
+ for tup in args:
+ if len(tup) == 2:
+ (key, fn) = tup
+ defval = None
+ else:
+ (key, fn, defval) = tup
+ try:
+ val = fn(self.read(key))
+ except TypeError:
+ val = defval
+ ret.append(val)
+ if len(ret) == 1:
+ return ret[0]
+ return ret
+
def Read(cls, path, *args):
while True:
t.commit()
return v
except RuntimeError, ex:
+ t.abort()
if ex.args[0] == errno.ETIMEDOUT:
pass
else:
raise
+ except:
+ t.abort()
+ raise
Read = classmethod(Read)
t.commit()
return
except RuntimeError, ex:
+ t.abort()
if ex.args[0] == errno.ETIMEDOUT:
pass
else:
raise
+ except:
+ t.abort()
+ raise
Write = classmethod(Write)
t.commit()
return
except RuntimeError, ex:
+ t.abort()
if ex.args[0] == errno.ETIMEDOUT:
pass
else:
raise
+ except:
+ t.abort()
+ raise
Remove = classmethod(Remove)
t.commit()
return v
except RuntimeError, ex:
+ t.abort()
if ex.args[0] == errno.ETIMEDOUT:
pass
else:
raise
+ except:
+ t.abort()
+ raise
List = classmethod(List)
+
+ def Gather(cls, path, *args):
+ while True:
+ try:
+ t = cls(path)
+ v = t.gather(*args)
+ t.commit()
+ return v
+ except RuntimeError, ex:
+ t.abort()
+ if ex.args[0] == errno.ETIMEDOUT:
+ pass
+ else:
+ raise
+ except:
+ t.abort()
+ raise
+
+ Gather = classmethod(Gather)